package com.xiaoda.dao;

import com.xiaoda.entity.User;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

@Repository
public interface UserDao {

    /**
     * 查询所有用户
     *
     * @return
     */
    List<User> findAll();

    /**
     * 查询用户
     *
     * @param account 账号
     * @return 用户
     */
    User findById(String account);

    /**
     * 用户登录
     *
     * @param account  账号
     * @param password 密码
     * @return 用户
     */
    User userLogin(@Param("account") String account, @Param("password") String password);

    /**
     * 添加用户
     *
     * @param user 用户
     * @return 添加结果
     */
    int addUser(User user);

    /**
     * 推荐关注
     *
     * @param uid 用户 id
     * @return 推荐关注
     */
    List<User> recommendedAttention(String uid);

    /**
     * 更新用户
     *
     * @param user 用户
     * @return 更新结果
     */
    int updateUser(User user);

    /**
     * 根据关键字查询用户
     *
     * @param map 关键字
     * @return 用户
     */
    List<User> findAllByKeyword(Map<String, Object> map);

    /**
     * 删除用户
     *
     * @param account 账号
     * @return 删除结果
     */
    int deleteByAccount(String account);

    /**
     * 添加完整用户
     *
     * @param user 用户
     * @return 添加结果
     */
    int addFullUser(User user);

}
